//引入axios--公共工具函数
import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui' //全局引入提示框
//只要发送请求，就会使用工具函数，相应拦截器就会msg提示服务器返回的信息

//封装公共地址
const instance = axios.create({  //声明周期传递对象
  baseURL: 'http://sell.h5.itsource.cn:8087', //公共地址
  timeout: 10000, //超时时间10秒
})

//封装请求拦截器
instance.interceptors.request.use(
  //config 请求信息对象
  config => {
    const token = store.getters.token  //token获取
    config.headers.authorization = token  //协议

    return config
  },
  //抛出错误信息
  err => {
    return Promise.reject(err)
  }
)



//封装响应拦截器
instance.interceptors.response.use(
  response => {
    // console.log(response); //获得到的是服务器返回的数据
    let { msg, code } = response.data //状态码和返回的数据解构出来使用
    if (code === 0) {
      Message.success(msg) //成功提示
    }

    if (code === 1) {
      Message.error(msg) //失败提示
    }

    if (code === 5001) {
      Message.error(msg) //失败提示
    }
    return response
  },
  //抛出错误信息
  err => {
    let { message, response } = err
    //判断有没有response
    if (response) {
      switch (response.status) {
        case 401:
          Message.error(message)
          break
        case 403:
          Message.error(message)
          break
        case 404:
          Message.error(message)
          break
        case 500:
          Message.error(message)
          break                                             
        default:
          Message.error(message)
          break
      }
    } else {
      Message.error(message)
    }
    return Promise.reject(err)

  }
)

//导出封装好的axios
export default instance
